// MongoDB初始化脚本 - 安全创建数据库和集合
const dbName = "test_chat";
const collectionName = "test_chat_msgs";

// 获取数据库列表判断是否存在
const dbList = db.getMongo().getDBNames();
const dbExists = dbList.includes(dbName);

// 切换到目标数据库（不存在会自动创建）
const db = db.getSiblingDB(dbName);

if (!dbExists) {
    print(`数据库 ${dbName} 不存在，正在创建...`);
} else {
    print(`数据库 ${dbName} 已存在`);
}

/**
 * 创建MongoDB集合和索引
 * @param {object} db - MongoDB数据库实例
 * @param {string} collectionName - 集合名称
 * @param {array} indexes - 索引配置数组，格式为[{keys: {...}, options: {...}}]
 */
function createCollectionWithIndexes(db, collectionName, indexes = []) {
    const collExists = db.getCollectionNames().includes(collectionName);

    if (!collExists) {
        print(`集合 ${collectionName} 不存在，正在创建...`);
        db.createCollection(collectionName);
        
        // 遍历索引列表创建索引
        indexes.forEach(index => {
            db[collectionName].createIndex(
                index.keys,
                index.options || {}
            );
            print(`创建索引: ${JSON.stringify(index.keys)}`);
        });
        
        print("集合和索引创建完成");
    } else {
        print(`集合 ${collectionName} 已存在`);
    }
}
// 使用示例：
// const indexes = [
//     {
//         keys: { userId: 1, lastUseAt: -1 },
//         options: { name: "query_by_user_sort_by_time" }
//     },
//     {
//         keys: { email: 1 },
//         options: { unique: true, name: "unique_email" }
//     }
// ];
// createCollectionWithIndexes(db, "users", indexes);

createCollectionWithIndexes(db, collectionName, [])

print("初始化检查完成");